// pages/biz/goods-list.js
const BizGoodsService = require('../../services/bizGoods');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    goodsList: [], // 商品列表
    page: 1, // 当前页码
    limit: 10, // 每页数量
    hasMore: true, // 是否有更多数据
    loading: false, // 是否正在加载
    refreshing: false, // 是否正在刷新
    total: 0, // 总数量
    layoutMode: 'list' // 布局模式：list-列表，grid-网格
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.loadGoodsList(true);
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.refreshGoodsList();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    this.loadMoreGoods();
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '商家商品列表',
      path: '/pages/biz/goods-list'
    };
  },

  /**
   * 加载商品列表
   * @param {boolean} isRefresh 是否为刷新操作
   */
  async loadGoodsList(isRefresh = false) {
    if (this.data.loading) return;

    try {
      this.setData({
        loading: true
      });

      const page = isRefresh ? 1 : this.data.page;
      const response = await BizGoodsService.getAllGoodsList(page, this.data.limit);

      if (response.success) {
        const newList = response.data.list || [];
        
        if (isRefresh) {
          // 刷新操作，替换整个列表
          this.setData({
            goodsList: newList,
            page: 1,
            hasMore: response.data.has_more,
            total: response.data.total
          });
        } else {
          // 加载更多，追加到列表
          this.setData({
            goodsList: [...this.data.goodsList, ...newList],
            page: page + 1,
            hasMore: response.data.has_more
          });
        }
      } else {
        wx.showToast({
          title: response.message || '加载失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('加载商品列表失败:', error);
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      });
    } finally {
      this.setData({
        loading: false
      });
    }
  },

  /**
   * 刷新商品列表
   */
  async refreshGoodsList() {
    if (this.data.refreshing) return;

    this.setData({
      refreshing: true
    });

    try {
      await this.loadGoodsList(true);
      wx.showToast({
        title: '刷新成功',
        icon: 'success'
      });
    } catch (error) {
      console.error('刷新失败:', error);
      wx.showToast({
        title: '刷新失败',
        icon: 'none'
      });
    } finally {
      this.setData({
        refreshing: false
      });
      wx.stopPullDownRefresh();
    }
  },

  /**
   * 加载更多商品
   */
  loadMoreGoods() {
    if (!this.data.hasMore || this.data.loading) return;
    this.loadGoodsList(false);
  },

  /**
   * 点击商品跳转到详情页
   */
  onGoodsTap(e) {
    const goodsId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/biz/goods?id=${goodsId}`
    });
  },

  /**
   * 点击商家跳转到商家详情页
   */
  onBizTap(e) {
    const bizId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/biz/index?id=${bizId}`
    });
  },

  /**
   * 切换布局模式
   */
  switchToLayout(e) {
    const mode = e.currentTarget.dataset.mode;
    if (mode !== this.data.layoutMode) {
      this.setData({
        layoutMode: mode
      });
      
      // 可以在这里添加布局切换的动画效果
      wx.showToast({
        title: mode === 'list' ? '已切换到列表模式' : '已切换到网格模式',
        icon: 'none',
        duration: 1000
      });
    }
  }
})